//
// Created by Administrator on 2025/9/30.
//


#include "Test11.h"

void Test11::Test11C1::foo1() {

}

void Test11::Test11C3::foo1() const {
    std::cout << this->x << " " << this->y << " " << this->c;
}


void Test11::foo2(Test11::Test11C3 &c) {
    std::cout << c.x << " " << c.y << " " << c.c;
}


void Test11::Test11C3::foo3() {
    static int t11s1 = 0;
    t11s1++;
    std::cout << t11s1;
}

void Test11::Test11C5::foo2() {
}

void Test11::Test11C4::foo1() {
}


void Test11::Test11C5::foo3() {
}

Test11::Test11C6 Test11::Test11C6::operator+(int a) {
    return {};
}


Test11::Test11C6 Test11::Test11C6::operator++(int a) {
    return {};
}


void Test11::Addr::foo1() const {
    std::cout << *this->email;
}

void Test11::Addr::foo3(int *a, std::string *c) {

}


void Test11::Addr::testException() {
    try {
        throw Test11::MyException2();
    } catch (std::exception &e) {
        std::cout << e.what();
    }
}


const char *Test11::MyException2::what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW {
    return "fuck bug";
}


Test11::Addr::operator int() const noexcept {
    return 0;
}


template<Test11::is_db T>
void Test11::Test11C7<T>::foo1() noexcept {

}

void Test11::Test11C8::testThread1() {
    std::cout << "wait run";
    this->c->wait(*this->lock, [&] {
        std::cout << this->cond;
        return this->cond;
    });
    std::cout << "run";
}


void Test11::Test11C8::setCondition() {
    std::lock_guard<std::mutex> mm(*this->m);
    this->cond = true;
    std::cout << "send_info";
    this->c->notify_all();
}

void Test11::Test11C8::foo1() {

}

int Test11::t11GlobalV = 1;
